/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package validators;

import java.util.StringTokenizer;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
 *
 * @author Felipe Duarte
 * Clase para validar la insercion del email
 */
public class EmailValidator implements Validator{     
    @Override
    public void validate(FacesContext context, UIComponent component, Object value)throws ValidatorException {
        String email = (String) value;
        FacesMessage message = new FacesMessage();             
        message.setSeverity(FacesMessage.SEVERITY_ERROR);             
        message.setSummary("La dirección de correo no es válida");             
        message.setDetail("El formato de dirección de correo no es válido"); 
        if(value.equals("")) {
            return;
        }
        if(email.contains(" ")) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error","La dirección de correo no debe contener espacios"));
        }
        else{
            if(!email.contains("@")||email.startsWith("@")) {
                context.addMessage(null, message);             
                throw new ValidatorException(message);         
            }
            else{
                StringTokenizer st=new StringTokenizer(email, "@");
                if(st.countTokens()<2){       
                    context.addMessage(null, message);             
                    throw new ValidatorException(message);
                }
                String end=st.nextToken();
                end=st.nextToken();
                if(end.contains("@")||!end.contains(".")){     
                    context.addMessage(null, message);             
                    throw new ValidatorException(message);
                }
                StringTokenizer st2=new StringTokenizer(end, ".");
                if(st2.countTokens()<2){           
                    context.addMessage(null, message);             
                    throw new ValidatorException(message);
                }
            }
        }
    } 
} 
